/**
 * @file	
 * @author	chipsea
 * @brief	
 * @version	0.1
 * @date	2020-11-30
 * @copyright Copyright (c) 2020, CHIPSEA Co., Ltd.
 * @note
 */

/**************************************************************************************************
  Filename:       AudioGATTprofile.h
  Revised:         
  Revision:        

  Description:    This file contains the Simple GATT profile definitions and
                  prototypes.

 **************************************************************************************************/

#ifndef AUDIOGATTPROFILE_H
#define AUDIOGATTPROFILE_H

#ifdef __cplusplus
extern "C"
{
#endif

/*********************************************************************
 * INCLUDES
 */

/*********************************************************************
 * CONSTANTS
 */

// Profile Parameters
#define AUDIOPROFILE_CHAR1                   0  // RW uint8 - Profile Characteristic 1 value 
#define AUDIOPROFILE_CHAR2                   1  // RW uint8 - Profile Characteristic 2 value



//product id
#define PRODUCT_ID                            0x0046

// AUDIO Profile Service UUID
#define AUDIOPROFILE_SERV_UUID               0xB000

    
// Key Pressed UUID
#define AUDIOPROFILE_CHAR1_UUID              0xB001
#define AUDIOPROFILE_CHAR2_UUID              0xB002

  
// AUDIO Keys Profile Services bit fields
#define AUDIOPROFILE_SERVICE               0x00000001

#define  AUDIOPROFILE_CHAR1_LEN            20   
#define  AUDIOPROFILE_CHAR2_LEN             20
// Length of Characteristic 5 in bytes
#define AUDIOPROFILE_CHAR5_LEN           5  


/*********************************************************************
 * TYPEDEFS
 */

  
/*********************************************************************
 * MACROS
 */

/*********************************************************************
 * Profile Callbacks
 */

// Callback when a characteristic value has changed
typedef void (*AudioProfileChange_t)( uint8 paramID );

typedef struct
{
  AudioProfileChange_t        pfnAudioProfileChange;  // Called when characteristic value changes
} AudioProfileCBs_t;

    

/*********************************************************************
 * API FUNCTIONS 
 */


/*
 * AudioProfile_AddService- Initializes the Audio GATT Profile service by registering
 *          GATT attributes with the GATT server.
 *
 * @param   services - services to add. This is a bit map and can
 *                     contain more than one service.
 */

extern bStatus_t AudioProfile_AddService( uint32 services );

/*
 * AudioProfile_RegisterAppCBs - Registers the application callback function.
 *                    Only call this function once.
 *
 *    appCallbacks - pointer to application callbacks.
 */
extern bStatus_t AudioProfile_RegisterAppCBs( AudioProfileCBs_t *appCallbacks );

/*
 * AudioProfile_SetParameter - Set a Audio GATT Profile parameter.
 *
 *    param - Profile parameter ID
 *    len - length of data to right
 *    value - pointer to data to write.  This is dependent on
 *          the parameter ID and WILL be cast to the appropriate 
 *          data type (example: data type of uint16 will be cast to 
 *          uint16 pointer).
 */
extern bStatus_t AudioProfile_SetParameter( uint8 param, uint8 len, void *value );
  
/*
 * AudioProfile_GetParameter - Get a Audio GATT Profile parameter.
 *
 *    param - Profile parameter ID
 *    value - pointer to data to write.  This is dependent on
 *          the parameter ID and WILL be cast to the appropriate 
 *          data type (example: data type of uint16 will be cast to 
 *          uint16 pointer).
 */
extern bStatus_t AudioProfile_GetParameter( uint8 param, void *value );

extern bStatus_t AudioProfile_Notify( uint8 param, uint8 len, void *value );

extern bStatus_t AudioProfile_Read( uint16 connHandle, gattAttribute_t *pAttr, 
                            uint8 *pValue, uint16 *pLen, uint16 offset, uint8 maxLen );

extern bStatus_t AudioProfile_Write( uint16 connHandle, gattAttribute_t *pAttr,
                                 uint8 *pValue, uint8 len, uint16 offset );


/*********************************************************************
*********************************************************************/

#ifdef __cplusplus
}
#endif

#endif /* SIMPLEGATTPROFILE_H */
